package com.atguigu.lease.common.context;


/***
 * ThreadLocal 工具类，用于存放当前登录的用户信息
 *
 * 补充下知识点：
 *      ThreadLocal：是servlet规范中定义的本地线程扩展类，它提供了线程局部变量。给每一个前端发来的请求都创建一个新的ThreadLocal对象，
 *      当请求处理完毕后，线程销毁，ThreadLocal对象也随之被销毁。下次前端发来请求时，又会创建一个新的ThreadLocal对象。
 *      举个例子：假如我有一个ThreadLocal对象，那么在同一个线程中对该对象的多次调用都会得到相同的结果。
 *
 */
public class LoginUserContext {
    //实例化ThreadLocal对象，用于存放当前登录的用户信息
    private static ThreadLocal<LoginUser> context = new ThreadLocal<>();

    /**
     * 设置当前登录的用户信息
     *
     * @param loginUser
     */
    public static void setLoginUser(LoginUser loginUser) {
        context.set(loginUser);
    }

    /**
     * 获取当前登录的用户信息
     *
     * @return
     */
    public static LoginUser getLoginUser() {
        return context.get();
    }

    /**
     * 移除当前登录的用户信息
     */
    public static void remove() {
        context.remove();
    }

}
